﻿#define  _CRT_SECURE_NO_WARNINGS 1
//简易计算器（函数与分支）
//背景：实现一个支持基本运算的命令行计算器，模拟日常计算场景。
//题目：
//编写程序，功能如下：
//1. 显示菜单：1.加法 2. 减法 3. 乘法 4. 除法 5. 退出；
//2. 用户选择功能后，输入两个操作数（浮点数）；
//3. 调用对应运算函数计算结果并输出（除法需判断除数是否为 0，若为 0 则提示“除数不能为 0”）；
//4. 计算完成后返回菜单，直到用户选择“退出”。
#include <stdio.h>
double addition()
{
	double a = 0;
	double b = 0;
	printf("请你输入两个数: ");
	scanf("%lf %lf", &a, &b);
	return a + b;
}
double subtraction()
{
	double a = 0;
	double b = 0;
	printf("请你输入两个数: ");
	scanf("%lf %lf", &a, &b);
	return a - b;
}

double multiplication()
{
	double a = 0;
	double b = 0;
	printf("请你输入两个数: ");
	scanf("%lf %lf", &a, &b);
	return a * b;
}

double DivisionMethod(double a,double b,int *is_valid)
{

	if (b == 0)
	{
		*is_valid = 0; // 除数为0，状态设置为无效
		return 0;
	}
	else
	{
		*is_valid = 1; // 除数有效，状态设置为有效
		return a / b;
	}
}
void menu( )
{
	printf("******* 1.加法********\n");
	printf("******* 2.减法********\n");
	printf("******* 3.乘法********\n");
	printf("******* 4.除法********\n");
	printf("******* 5.退出********\n");
}


int main()
{
	int choice = 0;
	double r = 0;
	do
	{
		menu(); // 菜单
		printf("请你选择:");
		scanf("%d", &choice);
		switch (choice)
		{
		case 1:
			 r = addition();//加法
			 printf("%.3lf\n", r);
			 break;
		case 2:
			r = subtraction();//减法
			printf("%.3lf\n", r);
			break;
		case 3:
			r = multiplication();//乘法
			printf("%.3lf\n", r);
			break;
		case 4:
		{
			int is_valid;
			double a = 0;
			double b = 0;
			printf("请你输入两个数: ");
			scanf("%lf %lf", &a, &b);
			r = DivisionMethod(a, b, &is_valid);//除法
			if (is_valid == 1)
			{
				printf("%.3lf\n", r);
			}
			else
			{
				printf("除数不能为0\n");
			}
			break;
		}
		case 5:
			printf("退出计算器\n");
			break;
		}

	} while (choice!=5);
	return 0;
}